package com.lifeverse.entity.enums;

/**
 * 协作任务状态枚举
 * 定义协作任务的执行状态
 */
public enum CollaborationTaskStatus {
    
    /**
     * 待开始 - 任务已创建，等待开始
     */
    PENDING("待开始", "任务已创建，等待开始"),
    
    /**
     * 进行中 - 任务正在执行
     */
    IN_PROGRESS("进行中", "任务正在执行"),
    
    /**
     * 等待协作 - 等待其他生命体协作
     */
    WAITING_FOR_COLLABORATION("等待协作", "等待其他生命体加入协作"),
    
    /**
     * 协作中 - 多个生命体正在协作
     */
    COLLABORATING("协作中", "多个生命体正在协作执行"),
    
    /**
     * 暂停 - 任务暂时暂停
     */
    PAUSED("暂停", "任务暂时暂停执行"),
    
    /**
     * 已完成 - 任务成功完成
     */
    COMPLETED("已完成", "任务成功完成"),
    
    /**
     * 已取消 - 任务被取消
     */
    CANCELLED("已取消", "任务被取消"),
    
    /**
     * 失败 - 任务执行失败
     */
    FAILED("失败", "任务执行失败"),
    
    /**
     * 超时 - 任务执行超时
     */
    TIMEOUT("超时", "任务执行超时");
    
    private final String displayName;
    private final String description;
    
    CollaborationTaskStatus(String displayName, String description) {
        this.displayName = displayName;
        this.description = description;
    }
    
    public String getDisplayName() {
        return displayName;
    }
    
    public String getDescription() {
        return description;
    }
    
    /**
     * 判断是否为活跃状态
     */
    public boolean isActive() {
        return this == IN_PROGRESS || this == WAITING_FOR_COLLABORATION || this == COLLABORATING;
    }
    
    /**
     * 判断是否已完成
     */
    public boolean isCompleted() {
        return this == COMPLETED || this == CANCELLED || this == FAILED || this == TIMEOUT;
    }
    
    /**
     * 判断是否可以开始协作
     */
    public boolean canStartCollaboration() {
        return this == PENDING || this == WAITING_FOR_COLLABORATION;
    }
    
    /**
     * 判断是否可以暂停
     */
    public boolean canPause() {
        return this == IN_PROGRESS || this == COLLABORATING;
    }
    
    /**
     * 判断是否可以恢复
     */
    public boolean canResume() {
        return this == PAUSED;
    }
}